package com.iotcomm.listener;

import com.iotcomm.protocol.Message;

/**
 * 消息监听器接口
 * 用于解耦网络通信层与业务逻辑层
 */
public interface MessageListener {
    
    /**
     * 接收到消息时的回调
     * @param message 接收到的消息
     * @param channelId 通道ID（用于标识客户端连接）
     */
    void onMessageReceived(Message message, String channelId);
    
    /**
     * 客户端连接时的回调
     * @param channelId 通道ID
     */
    void onClientConnected(String channelId);
    
    /**
     * 客户端断开连接时的回调
     * @param channelId 通道ID
     * @param username 用户名（如果已登录）
     */
    void onClientDisconnected(String channelId, String username);
    
    /**
     * 连接异常时的回调
     * @param channelId 通道ID
     * @param cause 异常原因
     */
    void onConnectionError(String channelId, Throwable cause);
}